import io.github.bonigarcia.wdm.WebDriverManager;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.time.Duration;
import java.util.Set;

public class AutoTest01 {
    WebDriver driver;
    //创建驱动:
     public void createDriver(){
        //1.使用驱动打开浏览器
         WebDriverManager.chromedriver().setup();
         //增加浏览器配置,创建驱动对象,强制指定允许访问所有链接
         ChromeOptions options = new ChromeOptions();
         options.addArguments("--remote-allow-origins=*");
         //测试状态设置成无头模式:
//         options.addArguments("-headless");
         driver = new ChromeDriver(options);
         //打开网址:法一:
         driver.get("https://www.baidu.com");
     }
     //百度搜索框,搜索"杨洋"
     public void test01() throws InterruptedException {
         //1.调用驱动
         createDriver();
         //进入百度搜索界面
         Thread.sleep(3000);
         //找到输入框,并输入"杨洋"
         driver.findElement(By.cssSelector("#kw")).sendKeys("杨洋");
         Thread.sleep(3000);
         //找到"百度一下"按钮,并点击
         driver.findElement(By.cssSelector("#su")).click();
         Thread.sleep(3000);
         //清除⽂本内容
         driver.findElement(By.cssSelector("#kw")).clear();
         Thread.sleep(3000);
         //重新搜索"杨冰倩"
         driver.findElement(By.cssSelector("#kw")).sendKeys("杨冰倩");
         Thread.sleep(3000);
         //关闭浏览器
         driver.quit();
     }
//
//     //获取文本
//     void test02() throws InterruptedException {
//         createDriver();
////         String text = driver.findElement(By.xpath("//*[@id=\"hotsearch-refresh-btn\"]/span")).getText();
////         //获取文本内容:
////         System.out.println("打印内容为: "+text);
//         String txt = driver.findElement(By.cssSelector("#su")).getAttribute("value");
//        System.out.println( "百度一下按钮上的文字为："+txt);
//        //获取当前页面的标题:
//         String title = driver.getTitle();
//         System.out.println("标题为: "+title);
//         //获取url:
//         String currentUrl = driver.getCurrentUrl();
//         System.out.println("URL: "+currentUrl);
//         driver.quit();
//     }
//     //切换窗口
//    void test03() throws InterruptedException {
//         createDriver();
//         //窗口最小化:
//         driver.manage().window().minimize();
//         Thread.sleep(3000);
//         //窗口最大化:
//        driver.manage().window().maximize();
//        Thread.sleep(3000);
//        driver.manage().window().fullscreen();
//        Thread.sleep(3000);
//        //手动设置窗口大小:
//        driver.manage().window().setSize(new Dimension(1024, 768));
//        Thread.sleep(3000);
//        driver.quit();
//    }
//
//    void test04() throws InterruptedException {
//         createDriver();
//         //点击"新闻"超链接
//        Thread.sleep(3000);
//         driver.findElement(By.cssSelector("#s-top-left > a:nth-child(1)")).clear();
//        String cutHandle = driver.getWindowHandle();
//        Set<String> allHandles = driver.getWindowHandles();
//        for(String handle: allHandles){
//            if(handle != cutHandle){
//                //切换窗口:
//                driver.switchTo().window(handle);
//            }
//        }
//         Thread.sleep(3000);
//         driver.quit();
//    }
//    //屏幕截图
//    void test05() throws IOException {
//         createDriver();
//         //初阶方法:
//        File srcFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
//        //存放到指定位置:
//        FileUtils.copyFile(srcFile,new File("my.png"));
//        driver.quit();
//    }
//    //进阶版屏幕截图:
//    void getScreenShot(String src) throws IOException {
//        //进阶截图方法:
//        SimpleDateFormat s1 = new SimpleDateFormat("yyyy-MM-dd");//年月日
//        //自动化执行的速度很快,时间要到毫秒级别的
//        SimpleDateFormat s2 = new SimpleDateFormat("HHmmssSS");//时分秒毫秒
//        //以年月日为组分为若干个文件,时分秒毫秒+测试次数为图片名
//        String dirTime = s1.format(System.currentTimeMillis());
//        String fileTime = s2.format(System.currentTimeMillis());
//        //全路径名: .src/test/image/2025-11-11/test05-111111.peg
//        String fileName = "./src/test/image/ "+ dirTime+"/"+src+"-"+fileTime+".png";
//        System.out.println("filename: "+fileName);
//        File srcFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
//        //存放到指定位置:
//        FileUtils.copyFile(srcFile,new File(fileName));
//    }
//    void test06() throws IOException {
//         createDriver();
//         getScreenShot(getClass().getName());
//         driver.quit();
//    }
//    //隐式等待
//    void test07() throws InterruptedException {
//         createDriver();
//         //设置隐式等待1000毫秒,隐式等待作用在全局元素上
//        driver.manage().timeouts().implicitlyWait(Duration.ofMillis(1000));
//        //寻找并点击百度搜索热搜界面上的"换一换",
//        driver.findElement(By.cssSelector("#hotsearch-refresh-btn > span")).click();
////        Thread.sleep(3000);
////        driver.findElement(By.cssSelector("#hotsearch-refresh-btn > span")).click();
////        Thread.sleep(3000);
////        driver.findElement(By.cssSelector("#hotsearch-refresh-btn > span")).click();
////        Thread.sleep(3000);
//        driver.quit();
//    }
//    //显示等待:在指定超时时间范围内,只要满足操作的条件,就会继续执行下去
//    void test08(){
//        createDriver();
//        //设置显示等待的超时时间为1000毫秒
//        WebDriverWait driverWait = new WebDriverWait(driver,Duration.ofMillis(1000));
//        //确保该元素可以点击
//        driverWait.until(ExpectedConditions.elementToBeClickable(By.cssSelector("#su")));
//        driver.findElement(By.cssSelector("#su")).click();
//        driver.quit();
//    }
//    //浏览器导航:
//    void test09() throws InterruptedException {
//         createDriver();
//        //打开网址 法二:
//        //打开b站网址:
//        driver.navigate().to("https://www.bilibili.com/");
////        driver.get("https://www.bilibili.com/");
//        Thread.sleep(1000);
////        //找到搜索框,并输入"比特":
////        driver.findElement(By.cssSelector("#nav-searchform > div.nav-search-content > input")).sendKeys("比特");
////        Thread.sleep(1000);
////        //找到搜索按钮,并点击:
////        driver.findElement(By.cssSelector("#nav-searchform > div.nav-search-btn")).click();
////        Thread.sleep(1000);
//
//     }
//    void test10() throws InterruptedException {
//         createDriver();
//         driver.get("https://tool.lu/");
//         //点击文库:
//         driver.findElement(By.cssSelector("#nav > div > div > ul > li:nth-child(3) > a > span")).click();
//         Thread.sleep(2000);
//        //浏览器的后退:
//        driver.navigate().back();
//        Thread.sleep(2000);
//        //前进:
//        driver.navigate().forward();
//        Thread.sleep(2000);
//        //刷新:
//        driver.navigate().refresh();
//        Thread.sleep(2000);
//        driver.quit();
//
//    }
}
